﻿using WMS.FC.Domain.DataTransferObject.WCS;
using WMS.FC.Domain.DomainObject.System;

namespace WMS.FC.Application.WCS.Interface
{
    public interface IWcsService
    {
        /// <summary>
        /// 获取托盘信息
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> GetTrayInfo(GetTrayInfoDTO dTO);

        /// <summary>
        /// 获取托盘目标站台
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> GetTrayTargetStation(GetTrayTargetStationDTO dTO);

        /// <summary>
        /// 托盘入库
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> PutTrayInbound(PutTrayInboundDTO dTO);

        /// <summary>
        /// 呼叫空托盘出库
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> GetEmptyTrayOutbound(GetEmptyTrayOutboundDTO dTO);

        /// <summary>
        /// 修改任务状态
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> ChangeTaskState(ChangeTaskStateDTO dTO);

        /// <summary>
        /// 堆垛机状态上报
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> ChangeEquipmentState(ChangeEquipmentStateDTO dTO);

        /// <summary>
        /// 托盘和电池绑定
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> BindCell(BindCellDTO dTO);

        /// <summary>
        /// 托盘和电池解绑
        /// </summary>
        /// <param name="dTO"></param>
        /// <returns></returns>
        Task<ResponseBase> UnbindCell(UnbindCellDTO dTO);
    }
}
